﻿/*! @file
********************************************************************************
<PRE>
文 件 名    : WebConfigFile.cs
说    明    : 获取web.config的附属文件
作    者    : 汪泽然
--------------------------------------------------------------------------------
备    注    : 
--------------------------------------------------------------------------------
修改记录: 
 * 日    期    版  本    修改人    修改内容 
 * 2009-7-9    0.1.0     汪泽然    
</PRE>
********************************************************************************
* 版权所有(c) 2008 ~ 2009, 汪泽然, 保留所有权利
*******************************************************************************/
using System.IO;
using System.Collections.Generic;
using Wangzeran.Transform.Core.ITransform;
using Wangzeran.Transform.Core.TransformException;

namespace Wangzeran.Transform.PlugIn.SubFiles
{
    /// <summary>
    /// 获取 Web.Config文件
    /// </summary>
    public class WebConfigFile : IChildFile
    {

        #region Common Variabies

        /// <summary>
        /// web.config配置文件
        /// </summary>
        private const string TYPE_WEB_CONFIG = "web.config";
        /// <summary>
        /// CSProj项目文件
        /// </summary>
        private const string TYPE_CSPROJ = "csproj";

        #endregion

        
        #region IGetSubFile 成员

        /// <summary>
        /// 获取Web.config文件
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <param name="lstSubFiles">附属文件集合</param>
        /// <returns></returns>
        public bool GetChildFiles(string filePath, IList<string> lstSubFiles)
        {
            try
            {
                // 如果当前文件路径为目录，并且不是文件
                if (!File.Exists(filePath) && Directory.Exists(filePath))
                { 
                    // Web项目（没有.csproj文件）
                    // 搜索该目录下的所有web.config文件
                    string[] files = Directory.GetFiles(filePath, TYPE_WEB_CONFIG,
                            SearchOption.AllDirectories);

                    foreach (string item in files)
                    {
                        lstSubFiles.Add(item);
                    }
                }

                return true;
            }
            catch (UnGetSubFileException ex)
            {
                throw ex;
            }
        }

        #endregion

    }
}
